﻿namespace WMS6.Services
{
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.ServiceModel;
    using WMS6.DataEntity;
    using WMS6.QueryEntity;

    [ServiceContract(Namespace="WMS6.Services", SessionMode=SessionMode.Allowed)]
    public interface IOutboundService
    {
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string AutoAllocate(string orderID, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string AutoPreAllocate(string orderID, string updateBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string AutoRevertAllocate(string orderID, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string AutoRevertPreAllocate(string orderID, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string BatchAllocate(string orderID, List<string> orderLineIDS, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string BatchClosed(List<string> waveID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        void BatchConfirmPicked(string waveID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(BatchOrderTypes))]
        string BatchOrderActions(string batchOrderID, string batchOrderType, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string BatchPreAllocate(string orderID, List<string> orderLineIDs, string updateBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        void BatchShipping(string waveID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string CancelShipping(List<string> pickDetailID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string CancelShippingByOrderID(List<string> orderID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string CancelShippingByOrderIDOrderLineID(string orderID, List<string> LineID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(InvLotLocLpnInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(ManualAllocateParams))]
        List<InvLotLocLpnInfo> CheckLocationQty4Allocation(ManualAllocateParams manualAllocateParams, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string ClosedByOrderID(List<string> orderID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string ConfirmPicked(List<string> pickDetailID, List<string> toLoc, string updateBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string ConfirmShipped(List<string> pickDetailID, string updateBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string DeleteOrderDetail(List<string> orderIDs, List<string> lineIDs, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string DeleteOrderSelectionInfos(List<string> orderSelectionID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string DeleteOrdersInfos(List<string> ordersID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string DeleteShipmentContainer(List<string> shipmentContainerID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string DeleteWave(List<string> IDS, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string DirectAllocation(string orderID, List<string> orderLineIDS, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string EncaseNesting(string strFromContainerID, string strToContainerID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string ExecuteExploding(List<string> orderIDs, List<string> lineIDs, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        DataSet GetAllIntransit(PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetAllWave(PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(IntransitQueryEntity))]
        DataSet GetIntransitByQueryEntity(IntransitQueryEntity intransitQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(IntransitInfo))]
        IntransitInfo GetIntransitInfoByID(string IntransitID, string srcDbID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string GetOrderIDsByWaveID(string waveID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(OrderSelectionInfo))]
        DataSet GetOrdersByOrderSelection(OrderSelectionInfo OrderSelection, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(OrdersQueryEntity)), ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetOrdersByQueryEntity(OrdersQueryEntity ordersQueryEntity, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetOrderSelectionAllInfo(PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(OrderSelectionInfo))]
        OrderSelectionInfo GetOrderSelectionByID(string OrderSelectionID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(OrderSelectionQueryEntity)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        DataSet GetOrderSelectionByQueryEntity(OrderSelectionQueryEntity OrderSelectionQuery, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        OrdersInfo GetOrdersInfoAndDetailListByID(string ordersID, string ContainerID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(OrdersInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        OrdersInfo GetOrdersInfoByID(string orderID, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PickDetailQueryEntity)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        DataSet GetPickDetailInfoByQueryEntity(PickDetailQueryEntity pickDetailQueryEntity, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        ShipmentContainerInfo GetShipmentContainerByID(string shipmentcontainerID, string orderID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(ShipmentContainerInfo))]
        List<ShipmentContainerInfo> GetShipmentContainerByOrderID(string OrderID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(OrderDetailInfo))]
        OrderDetailInfo GetShippingOrderDetailByID(string OrderID, string LineID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        WaveInfo GetWaveByID(string id, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        DataSet GetWaveByQueryList(WaveQueryEntity waveQuery, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(OrderDetailInfo)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string InsertOrderDetailInfo(OrderDetailInfo ordersDetailInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(OrderSelectionInfo)), OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string InsertOrderSelectionInfo(OrderSelectionInfo orderSelectionInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), ServiceKnownType(typeof(OrdersInfo)), OperationContract]
        string InsertOrdersInfo(OrdersInfo ordersInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string InsertShipmentContainer(List<ShipmentContainerInfo> shipmentcontainerInfo, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string InsertWave(WaveInfo obj, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract, ServiceKnownType(typeof(PickDetailInfo))]
        string ManualAllocate(List<PickDetailInfo> pickDetailInfo, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string ReleasePcTasks(List<string> RequestID, string updateBy, string PcStatus, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string ReleasePickTasks(List<string> pickDetailID, string updateBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string RevertAllocate(List<string> PickDetailIDs, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string RevertPicked(List<string> pickDetailID, string updateBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string RevertPickedAllocated(List<string> pickDetailID, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string RevertPreAllocate(string orderID, List<string> lineIDs, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string ScanShipmentContainer(List<ShipmentContainerInfo> shipmentcontainerList, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string ShippedByOrderID(List<string> orderID, string shippDate, string updatedBy, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string ShippedByOrderLineID(string orderID, List<string> orderLineIDs, string shippDate, string updatedBy, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string UpateActualShipDateByOrderID(string OrderID, string actualShipDate, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string UpateActualShipDateByOrderIDLineID(string OrderID, List<string> LineID, string actualShipDate, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string UpateActualShipDateByPickDetailID(List<string> pickDetailID, List<string> OrderID, List<string> LineID, string actualShipDate, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(OrderDetailInfo)), ServiceKnownType(typeof(PubParasInfo))]
        string UpdateOrderDetailInfo(OrderDetailInfo ordersDetailInfo, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(OrderSelectionInfo)), ServiceKnownType(typeof(PubParasInfo))]
        string UpdateOrderSelectionInfo(OrderSelectionInfo orderSelectionInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(OrdersInfo)), ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string UpdateOrdersInfo(OrdersInfo ordersInfo, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string UpdateShipmentContainer(List<ShipmentContainerInfo> shipmentcontainerList, PubParasInfo pubParasInfo);
        [OperationContract, ServiceKnownType(typeof(PubParasInfo))]
        string UpdateShippUDFByOrderID(List<OrderDetailInfo> orderDetailInfo, PubParasInfo pubParasInfo);
        [ServiceKnownType(typeof(PubParasInfo)), OperationContract]
        string UpdateWave(WaveInfo obj, PubParasInfo pubParasInfo);
    }
}

